// @Description 延时任务控制器
// @Author  xiaoyang
// @Date  2025/11/26

package controllers

import (
	"github.com/gin-gonic/gin"
	"golang-manage-admin/http/modules/demo/dto"
	"golang-manage-admin/http/modules/demo/services"
)

type DelayedController struct {
	Controller
	delayedService *services.DelayedService
}

// Init 初始化延时任务控制器
func (dc *DelayedController) Init() {
	dc.delayedService = &services.DelayedService{}
}

// SendDelayedTask 添加延时任务
// @Tags     DelayedService
// @Summary  添加延时任务接口
// @Description 添加一个延时任务到队列中，支持指定过期时间和任务详情
// @Accept   application/json
// @Produce  application/json
// @Param    data body dto.SendDelayedTaskForm true "延时任务参数"
// @Success  200  {object} controllers.ResponseFormat "添加成功"
// @Failure  400  {object} controllers.ResponseFormat "参数错误"
// @Failure  500  {object} controllers.ResponseFormat "添加失败"
// @Router   /test/send-delayed-task [post]
func (dc *DelayedController) SendDelayedTask(c *gin.Context) {
	// 参数获取和校验
	form := &dto.SendDelayedTaskForm{}
	if err := form.BindValidParam(c); err != nil {
		dc.BadResponse(10000, err.Error(), c)
		return
	}

	// 调用 Service 层处理业务逻辑
	err := dc.delayedService.SendDelayedTask(form)
	if err != nil {
		dc.BadResponse(20000, err.Error(), c)
		return
	}

	dc.JsonResponse("", c)
}
